package main

import (
	md52 "crypto/md5"
	"fmt"
	"io/ioutil"
	"os"
	"runtime"
)

/**
  不管什么方法都会随着文件变大时间会变长，上面的例子大约都是2倍
  io.Copy 方法效率最高，建议大家这样使用

获取多个文件 md5 校验和判断是否存在重复文件，因为文件数量较多，有的文件还比较大，需要处理的文件还没有到位，我就考虑了一下效率的问题。目前我已知的 Golang 中获取 md5 校验和的方法有两个
*/
func md5sum(filepath string)(string, err){
	f,err := os.Open(filepath)
	if err != nil{
		str1 := "Open err"
		return str1, err
	}
	defer f.Close()

	body, err:= ioutil.ReadAll(f)
	//ioutil.ReadDir()
	//ioutil.ReadFile()

	if err != nil{
		str2:="ioutil.ReadAll"
		return str2, err
	}
	md5 := fmt.Sprintf("%x",md52.Sum(body))
	runtime.GC()
	return md5, nil
}
func main() {
	fmt.Println("计算文件MD5")
}